﻿using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.IO;

namespace OrderManager
{
    static class Program
    {
        internal static List<Food> foodList;


        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            // Ha nem létezik a menüt tartalmazó fájl, hozzunk létre egy üreset
            if (!File.Exists("Menu.txt"))
            {
                try
                {
                    StreamWriter menu = File.CreateText("Menu.txt");
                    menu.Close();
                }
                catch (Exception exc)
                {
                    MessageBox.Show("A menüt tartalmazó fájl nem hozható létre.\nA hiba részletes leírása:\n" + exc.Message);
                    return;
                }
            }

            // Ha nem létezik a rendelések azonosítóit tartalmazó fájl, hozzuk létre
            if (!File.Exists("Orders.txt"))
            {
                try
                {
                    StreamWriter orders = File.CreateText("Orders.txt");
                    orders.Close();
                }
                catch (Exception exc)
                {
                    MessageBox.Show("A rendeléseket számontartó fájl nem hozható létre.\nA hiba részletes leírása:\n" + exc.Message);
                    return;
                }
            }

            // Ha nem létezik a következő rendelés azonosítóját tartalmazó fájl, hozuk létre
            if (!File.Exists("OrderCounter.txt"))
            {
                try
                {
                    StreamWriter orderCounter = File.CreateText("OrderCounter.txt");
                    orderCounter.WriteLine("1");
                    orderCounter.Flush();
                    orderCounter.Close();
                }
                catch (Exception exc)
                {
                    MessageBox.Show("A rendelésszámlálót tartalmazó fájl nem hozható létre.\nA hiba részletes leírása:\n" + exc.Message);
                    return;
                }   
            }

            // Ha nem létezik a Statistics mappa, hozzuk létre
            if (!Directory.Exists("Statistics"))
            {
                try
                {
                    Directory.CreateDirectory("Statistics");
                }
                catch (Exception exc)
                {
                    MessageBox.Show("Hiba történt.\nA hiba leírása:\n" + exc.Message);
                    return;
                }
            }

            // Ha nem létezik az Orders mappa, hozzuk létre
            if (!Directory.Exists("Orders"))
            {
                try
                {
                    Directory.CreateDirectory("Orders");
                }
                catch (Exception exc)
                {
                    MessageBox.Show("Hiba történt.\nA hiba leírása:\n" + exc.Message);
                    return;
                }
            }


            // A menü betöltése
            try
            {
                foodList = MenuUpdater.load("Menu.txt");
            }
            catch (FileNotFoundException)
            {
                MessageBox.Show("A fájl nem található.");
                return;
            }
            catch (FormatException)
            {
                MessageBox.Show("A menüt tartalmazó fájl érvénytelen értéket tartalmaz ott, ahol számnak kell lennie.");
                return;
            }
            catch (ArgumentException)
            {
                MessageBox.Show("A fájl sérült vagy nem dolgozható fel.");
                return;
            }
            catch (Exception exc)
            {
                MessageBox.Show("Hiba történt. A hiba leírása:\n" + exc.Message);
                return;
            }

            

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new OrderManager());
        }
    }
}
